package com.zzh.interview.esdao;

import com.zzh.interview.model.dto.question.QuestionEsDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

/**
 * 题目 ES 操作
 * QuestionEsDTO,Long 是 ElasticsearchRepository 的泛型参数 Long表示主键类型
 */
@Repository
public interface QuestionEsDao extends ElasticsearchRepository<QuestionEsDTO, Long> {
    // es根据标题title查询一堆相关的题目
    Page<QuestionEsDTO> findByTitle(String title, Pageable pageable);

    // 根据 title、answer 和 content 组合查询并分页，同时根据 score 排序
    @Query("{\"bool\":{\"should\":[{\"match\":{\"title\":\"?0\"}},{\"match\":{\"answer\":\"?0\"}},{\"match\":{\"content\":\"?0\"}}]}}")
    Page<QuestionEsDTO> findByTitleOrAnswerOrContentWithSingleParam(String searchText, Pageable pageable);

}
